#ifndef SOUNDMANAGER_H_INCLUDED
#define SOUNDMANAGER_H_INCLUDED

#include "Singleton.h"
#include <string>
#include <SDL_mixer.h>
#include <map>
#undef PlaySound

class SoundManager : public Uncopyable
{
public:
	bool PlaySound(const std::string& FilePath);
	bool PlayMusic(const std::string& FilePath, const int Loops);
	void FadeIn();
	void FadeOut();
	void LoadSound(const std::string& FilePath, const std::string& Tag);
	void LoadMusic(const std::string& FilePath, const std::string& Tag);

private:
	SoundManager();
	friend class Singleton<SoundManager>;
	Mix_Chunk* m_Sound;
	std::map<std::string, Mix_Chunk*> SoundMap;
	std::map<std::string, Mix_Music*> MusicMap;
};

typedef Singleton<SoundManager> TheSound;

#endif